package cn.shrek.controller;

import cn.shrek.bean.Student;
import cn.shrek.bean.User;
import cn.shrek.service.ConsumerService;
import org.springframework.cloud.client.discovery.DiscoveryClient;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.List;


/**
 *用户控制类，前端通过调用这个controller这个类来访问provider
 */
@RestController
@CrossOrigin //解决跨域问题
public class ConsumerController {
    /**
     * restTemplate 可以调用远程的方法
     */
    @Resource
    private RestTemplate restTemplate;
    /**
     * DiscoveryClient 是nacos依赖中的一个类，可以通过provider的名字调用远程的方法
     */
    @Resource
    private DiscoveryClient discoveryClient;
    //使用负载均衡
    @Resource
    private LoadBalancerClient loadBalancerClient;
    @Resource
    private ConsumerService service;

    @GetMapping("/findAll")
    public List<User> findAll(){
        return service.findAll();
    }

    @GetMapping("/doLogin")
    public String doLogin(@RequestParam("user_name")String user_name, @RequestParam("userpwd")String userpwd){

        return service.doLogin(user_name,userpwd);
    }
    @GetMapping("/end")
    public String go_index(){
        return service.go_index();
    }

    /*通过id查用户*/
    @GetMapping("/findById")
    public List<Student> findById (@RequestParam("s_id") Integer s_id){
        return service.findById(s_id);
    }

    /**
     * 这里用到了判断，因为前端的提交表单的确定按钮添加和修改是同一个
     * 所以这里再更改的时候需要一个判断
     * 判断是否传入了id
     * 因为在添加的时候是没有传入id的，而修改是根据id进行修改的，所以可以判断Student的id是否为空
     * 如果是空的，说明这个用户在数据库中没有是可以添加的
     * 如果不是空的，说明用户已存在，不能在添加，只能修改
     * 添加*/
    @PostMapping("/add")
    public void add(@RequestBody Student Student){
        if(Student.getsId()==null) {
            service.add(Student);
        }else {
            service.update(Student);
        }
    }

    /*更新*/
    @GetMapping("/update")
    public void update(@RequestBody Student Student){
        service.update(Student);
    }

    /*删除*/
    @GetMapping("/delete")
    public int delete(@RequestParam("s_id") int s_id){
        int delete = service.delete(s_id);
        return delete;
    }



}
